package com.zbkj.crmeb.store.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.common.CommonPage;
import com.common.PageParamRequest;
import com.zbkj.crmeb.store.model.StoreUserGroup;
import com.zbkj.crmeb.store.request.StoreUserGroupFeatureRequest;
import com.zbkj.crmeb.store.request.StoreUserGroupRequest;
import com.zbkj.crmeb.store.response.StoreUserGroupResponse;

import java.util.List;
import java.util.Map;

/**
 * 功能描述: 分群服务类
 * @Author: wangzh
 * @Date: 2022/9/30 10:11
 */
public interface StoreUserGroupService extends IService<StoreUserGroup> {

    /**
     * 功能描述: 用于定时计算用户分群
     *
     * @Param:
     * @Return: void
     * @Author: duyb
     * @Date: 2022/10/19
     */
    void calculationUserGroup();

    /**
     * 功能描述: 返回当前用户所属商户下的所有分群id与名称
     * @Param: [merId]
     * @Return: java.util.Map<java.lang.Integer,java.lang.String>
     * @Author: wangzh
     * @Date: 2022/9/30 10:39
     */
    Map<Integer, String> getGroupName(Integer merId);

    /**
     * 功能描述: 保存特征与条件
     * @Param: [request, merId]
     * @Return: java.lang.Boolean
     * @Author: wangzh
     * @Date: 2022/9/30 13:21
     */
    Boolean saveGroup(StoreUserGroupRequest request, Integer merId);

    /**
     * 功能描述: 分页查询分群信息
     * @Param: [request, merId]
     * @Return: java.util.List<com.zbkj.crmeb.store.response.StoreUserGroupResponse>
     * @Author: wangzh
     * @Date: 2022/9/30 15:15
     */
    CommonPage<StoreUserGroupResponse> getList(PageParamRequest request, Integer merId);

    /**
     * 功能描述: 根据分群id删除分群
     * @Param: [id]
     * @Return: java.lang.Boolean
     * @Author: wangzh
     * @Date: 2022/9/30 15:36
     */
    Boolean deleteGroup(Integer id);

    /**
     * 功能描述: 计算人数
     * @Param: [merId storeUserGroupFeatureRequestList]
     * @Return: Integer
     * @Author: duyb
     * @Date: 2022/10/08 09:58
     */
    Integer calculatePeople(Integer merId,Integer groupId, List<StoreUserGroupFeatureRequest> storeUserGroupFeatureRequestList);

    /**
     * @Description: 根据id查询分群信息
     * @param Integer groupId
     * @param Integer merId
     * @Return: com.zbkj.crmeb.store.response.StoreUserGroupResponse
     * @Author: wangzh
     * @Date: 2022/10/11 9:55
     */
    StoreUserGroupResponse getByGroupId(Integer groupId, Integer merId);

    /**
     * 功能描述: 根据分群id修改人数
     * @Param: [groupId, merId]
     * @Return: java.lang.Boolean
     * @Author: wangzh
     * @Date: 2022/10/20 16:37
     */
    Boolean updateGroupPeopleNumById(Integer groupId, Integer merId);
}
